// import 'package:flame/game.dart';
// import 'package:flame/components.dart';
// import 'package:flame/events.dart';
// import 'package:flutter/material.dart';
// import 'dart:math' as math;
// import 'package:vector_math/vector_math.dart' as vector;
//
// class MinecraftGamePage extends StatelessWidget {
//   const MinecraftGamePage({Key? key}) : super(key: key);
//
//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       appBar: AppBar(
//         title: const Text('Minecraft Game'),
//         backgroundColor: const Color(0xFF1a237e),
//       ),
//       body: GameWidget(
//         game: MinecraftGame(),
//       ),
//     );
//   }
// }
//
// class MinecraftGame extends FlameGame with TapDetector, PanDetector {
//   late CameraComponent camera;
//   late List<Block> blocks;
//   late Vector2 center;
//   double rotationAngle = 0;
//   double cameraAngle = 0;
//   double cameraDistance = 500;
//   Vector2? lastPanPosition;
//   Block? selectedBlock;
//   bool isBuildingMode = true;
//
//   @override
//   Future<void> onLoad() async {
//     // 设置相机
//     camera = CameraComponent();
//     camera.viewfinder.zoom = 0.5;
//     add(camera);
//
//     // 计算屏幕中心
//     center = size / 2;
//
//     // 初始化方块列表
//     blocks = [];
//
//     // 创建地面
//     for (int x = -5; x <= 5; x++) {
//       for (int z = -5; z <= 5; z++) {
//         blocks.add(
//           Block(
//             worldPosition: Vector3(x * 50.0, -25.0, z * 50.0),
//             size: Vector3.all(50.0),
//             color: Colors.green,
//           ),
//         );
//       }
//     }
//
//     // 添加所有方块到游戏中
//     for (var block in blocks) {
//       add(block);
//     }
//   }
//
//   @override
//   void update(double dt) {
//     super.update(dt);
//
//     // 更新相机位置
//     camera.viewfinder.position = Vector3(
//       cameraDistance * math.sin(cameraAngle),
//       0,
//       cameraDistance * math.cos(cameraAngle),
//     );
//
//     // 更新相机朝向
//     camera.viewfinder.lookAt(Vector3.zero());
//
//     // 更新所有方块的位置
//     for (var block in blocks) {
//       block.updateScreenPosition(camera.viewfinder);
//     }
//   }
//
//   @override
//   bool onTapDown(TapDownInfo info) {
//     if (isBuildingMode) {
//       // 在点击位置创建新方块
//       final worldPosition = camera.viewfinder.screenToWorld(info.eventPosition.game);
//       final newBlock = Block(
//         worldPosition: Vector3(
//           (worldPosition.x / 50).round() * 50.0,
//           (worldPosition.y / 50).round() * 50.0,
//           (worldPosition.z / 50).round() * 50.0,
//         ),
//         size: Vector3.all(50.0),
//         color: Colors.brown,
//       );
//
//       // 检查是否已经有方块在这个位置
//       final existingBlock = blocks.firstWhere(
//         (block) => block.worldPosition == newBlock.worldPosition,
//         orElse: () => Block(
//           worldPosition: Vector3.zero(),
//           size: Vector3.zero(),
//           color: Colors.transparent,
//         ),
//       );
//
//       if (existingBlock.worldPosition == Vector3.zero()) {
//         blocks.add(newBlock);
//         add(newBlock);
//       }
//     } else {
//       // 选择方块
//       final worldPosition = camera.viewfinder.screenToWorld(info.eventPosition.game);
//       selectedBlock = blocks.firstWhere(
//         (block) => block.containsPoint(worldPosition),
//         orElse: () => Block(
//           worldPosition: Vector3.zero(),
//           size: Vector3.zero(),
//           color: Colors.transparent,
//         ),
//       );
//
//       if (selectedBlock != null && selectedBlock!.worldPosition != Vector3.zero()) {
//         // 删除选中的方块
//         blocks.remove(selectedBlock);
//         remove(selectedBlock);
//       }
//     }
//     return true;
//   }
//
//   @override
//   bool onPanStart(DragStartInfo info) {
//     lastPanPosition = info.eventPosition.game;
//     return true;
//   }
//
//   @override
//   bool onPanUpdate(DragUpdateInfo info) {
//     if (lastPanPosition != null) {
//       final delta = info.eventPosition.game - lastPanPosition!;
//       cameraAngle += delta.x * 0.01;
//       cameraDistance = math.max(100, math.min(1000, cameraDistance - delta.y));
//       lastPanPosition = info.eventPosition.game;
//     }
//     return true;
//   }
//
//   @override
//   bool onPanEnd(DragEndInfo info) {
//     lastPanPosition = null;
//     return true;
//   }
// }
//
// class Block extends PositionComponent {
//   final Vector3 worldPosition;
//   final Vector3 size;
//   final Color color;
//
//   Block({
//     required this.worldPosition,
//     required this.size,
//     required this.color,
//   }) : super(
//     position: Vector2.zero(),
//     size: Vector2(size.x, size.z),
//   );
//
//   void updateScreenPosition(CameraComponent camera) {
//     // 将3D世界坐标转换为2D屏幕坐标
//     final screenPos = camera.viewfinder.project(worldPosition);
//     position = Vector2(screenPos.x, screenPos.y);
//   }
//
//   bool containsPoint(Vector3 point) {
//     return point.x >= worldPosition.x - size.x/2 &&
//            point.x <= worldPosition.x + size.x/2 &&
//            point.y >= worldPosition.y - size.y/2 &&
//            point.y <= worldPosition.y + size.y/2 &&
//            point.z >= worldPosition.z - size.z/2 &&
//            point.z <= worldPosition.z + size.z/2;
//   }
//
//   @override
//   void render(Canvas canvas) {
//     final paint = Paint()
//       ..color = color
//       ..style = PaintingStyle.fill;
//
//     // 绘制方块
//     canvas.drawRect(
//       Rect.fromCenter(
//         center: Offset.zero,
//         width: size.x,
//         height: size.z,
//       ),
//       paint,
//     );
//   }
// }